home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Developer Toolbox 6.1
/
SGI Developer Toolbox 6.1 - Disc 4.iso
/
Makefile.README
< prev
next >
Wrap
Makefile
|
1994-08-01
|
6KB
|
148 lines
~4Dgifts/toolbox/Makefile.README
In the wacky world of IRIX 5.x the toolbox janitor has learned of some
useful tidbits to pass on:
--> what "Warning: Quickstart not set for..." means, when compiling.
To start with, in IRIX 5.2, they forgot to change the lines in
/usr/include/make/commondefs from:
# Note: To turn off -quickstart_info for specific Makefile add:
# LD_QUICKSTART_INFO=
LD_QUICKSTART_INFO=-quickstart_info
to be what was intended:
# Note: To turn on -quickstart_info for specific Makefile add:
# LD_QUICKSTART_INFO=-quickstart_info
LD_QUICKSTART_INFO=
but wasn't remembered tuntil it was too late to be changed. Since
"-quickstart_info" is still active, there are many cases where the
compilers will appear to be barking about something, that in fact
is not actually a "loss" in the performance sense of the word.
Picking up from a thread on an internal sgi news group about all
this:
Subject: Re: why do I get "Warning: Quickstart not set for..."
| > Warning: Quickstart not set for wipe_split since you are using different versions of libgl.so
|
| It's a long story, but the short version of it is that you have more
| than one component in your link that depends on libgl.so (say, your
| program and one of your other DSOs), and that they were created
| against different versions of libgl.so.
|
| Walk down your library list for your link, and run "elfdump -Dl" on
| each of them, looking for "libgl.so" in the output. Compare the
| timestamp on them with the timestamp in the libgl.so on your system
| (obtained using "elfdump -L /usr/lib/libgl.so").
*By definition* any system with graphics has a different libgl.so than
all the other DSO's were linked against, because that is the server
libgl.so in the build tree. This is one of the issues that the
performance team grappled with, and ignored, waiting for requickstart.
Fortunately, libgl is usually one of the last libraries in the library
list, and only that library and the ones following it fail to
quickstart; the ones before it will.
However, you should *NOT* be getting the complaint, unless you are using
the commondefs stuff, because that warning was supposed to be turned off
in the 5.2 MR compilers, by default.
- - - - - - - - - - - - - - - -- - - - - - -
| It's a long story, but the short version of it is that you have more
| than one component in your link that depends on libgl.so (say, your
| program and one of your other DSOs), and that they were created
| against different versions of libgl.so.
If a DSO was linked with libgl.so without the DELAY option by, for
example, specifying libgl in LLDLIBS, that is a bug in the Makefile
for that DSO. We have to specify all dependent DSOs, except the
libgl.so DSO, in LLDLIBS when we build our DSOs if we want the programs
linked with our DSOs to quickstart. When they introduced the DELAY
option, I think you could link your DSO with libgl.so with the DELAY
option.
I checked DSOs on a machine, and found two DSOs that are linked with
libgl with DELAY, and one without DELAY. I think that the ones with
DELAY are O.K., but that the other one needs to be fixed: could _____
please confirm that, before I open bug reports.
libSgm.so:
libgl.so Apr 4 01:28:31 1994 0x1ce762ea DELAY sgi1.0
libSgw.so:
libgl.so Apr 4 01:28:31 1994 0x1ce762ea DELAY sgi1.0
libil.so:
libgl.so Apr 4 01:28:31 1994 0x1ce762ea NONE sgi1.0
--> In IRIX5, don't use _s when specifying libraries to link with.
Entering the brave new world of dso's, it is important to
remember that shared libraries are again, a thing of the past.
For compiling, any library linked in with a trailing "_s" is
meaningless, because we no longer are working with the rules
set up by SVR4. AT&T USL SVR3 created and used the -lc_s
terminology, and when they created SVR4 (which is what IRIX 5
works like), AT&T USL abandoned the "_s" way of specifying
shared libraries and went back to the old style, "-lc,". True,
one *can* still compile with _s, but this specifier simply gets
munged by the linker (if not before) and tossed out, so that
whether its an archive or a dso, the linker will do the right
thing.
Since v4.0, the toolbox janitor has attempted to expunge all
"_s" library names from Makefiles in the src and lib subtrees.
If you find anyplace where they still exist, please let me know
at dave@sgi.com or 415/390-3556.
--> In IRIX5, libsun.a is no more.
Don't link with -lsun in IRIX 5--there is no longer any such
library, even thought there is still a stub in /usr/lib/libsun.a
so older Makefiles won't break.
--> All Makefiles in the src tree now work with commondefs' VLDOPTS.
In case yer as ignorat as the toolbox janitor tends to be of the
power of /usr/include/make/{commondefs,commonrules}, please notice
all references to "-s" for generating stripped binary files have
been expunged from the Makefiles in the src subtree. In concert
with this the proper usage of $(LDFLAGS) on the load/link line has
been corrected in Makefiles where $(LLDLIBS) was used previously
(always be sure you use $(LDFLAGS) on the loader line--this
enables one to "hook on" all kinds of dynamic flags settings at
make/compile-time and avoid the clunkiness of having "hard-wired"
flags statically fixed inside the Makefiles). From all this one
can now build whatever portion of the src subtree one wants to as
stripped binaries by using the commondefs Loader flag, VLDOPTS
and setting it equal to "-s" thusly:
% make VLDOPTS=-s
At this point all binaries generated will be stripped. On v4.0,
about 98-plus percent of binaries in the the src subtree are
stripped and were generated by taking advantage of commondef's
variable loader flag. (The only actual documentation on commondefs
and commonrules exists as comments in the files themselves, but as
with all such things, spending a little time reading/acquainting
oneself with these tools can save a LOT of time later on.)